# 3、文件和文件夹的操作
# 在Python中文件和文件夹的操作要借助os模块里面的相关功能。OS模块是Python标准库中的一个用于访问操作系统功能的模块。
# 首先需要导入OS模块： import os
import os  # 使用之前先导入

# os.name  # 查看当前操作系统的名字，"nt"表示Windows，"posix"表示Linux    常用
# os.sep  # 获取当前系统平台路径分隔符                                   常用
# os.getcwd()  # 获取当前工作目录                                      常用
# os.environ[key] / os.getenv(key)  # 获取当前环境变量值
# os.listdir(path)  # 列出指定目录path的所有文件和目录名   返回一个list
# os.chdir(path)  # 切换目录
# os.mkdir(path) / os.makedirs(path)  # 创建单层目录/多层目录
# os.makedirs(target_dir, exist_ok=True)
    # target_dir：要创建的目录路径（可以是绝对路径或相对路径）
    # exist_ok：布尔值参数（默认为 False）
    # True：如果目录已存在，不会报错
    # False：如果目录已存在，会抛出 FileExistsError 异常
# os.rmdir(path) / os.removedirs(path)  # 删除单层空目录/多层空目录
# os.remove(file_name)  # 删除文件
# os.rename(old_name, new_name)  # 修改文件或目录名称
# os.path.abspath(path)  # 获取指定相对路径的绝对路径
# os.path.split(path)  # 获取指定路径的目录名或文件名
# os.path.isfile(path)  # 判断指定路径目标是否为文件
# os.path.isdir(path)  # 判断指定路径目标是否为目录
# os.path.exists(path)  # 判断指定路径是否存在
# os.path.splitext(path)  # 分离文件拓展名
# os.path.join(path, *paths)  # 路径连接
# os.path.base(path)  # 提取文件名
# os.path.dirname(path)  # 提取文件路径
# os.path.getsize(path)  # 返回文件大小
#

# os.path.split(r'D:\python_www\tch01\test3.txt')  中的 r'D:\python_www\tch01\test3.txt' r表示 后面的\原字符的意思，不是转义符的意思。

print(os.name)  # 输出 nt "nt"表示Windows
print(os.sep)  # 输出 \  获取当前系统平台路径分隔符\
print(os.getcwd())  # 输出 D:\python_www\tch01 获取当前工作目录
print(os.environ['MYSQL_HOME'])
print(os.listdir(os.getcwd()))
print(os.path.abspath('test3.txt'))  # 获取指定相对路径的绝对路径 输出：D:\python_www\tch01\test3.txt
print(os.path.split(r'D:\python_www\tch01\test3.txt'))  # 获取指定路径的目录名或文件名 放到元组中 ('D:\\python_www\\tch01', 'test3.txt')
print(
    os.path.splitext(r'D:\python_www\tch01\test3.txt'))  # # 分离文件拓展名 放到元组中返回 输出：('D:\\python_www\\tch01\\test3', '.txt')

print(os.path.isfile(r'D:\python_www\tch01\test3.txt'))
print(os.path.basename(r'D:\python_www\tch01\test3.txt'))

print('*' * 50)
# 案例：读取一个文件夹下所有的子文件夹以及子文件，打印出来
import os
def list_directory(path):
    # 获取目录下所有内容名称
    items = os.listdir(path)
    for item in items:
        item_path = os.path.join(path, item)  # 拼接完整路径
        if os.path.isdir(item_path):
            print(f"文件夹: {item}")
        else:
            print(f"文件: {item}")


target_path = "D:\\python_www\\tch01\\"
list_directory(target_path)